'''
Created on 2017年5月16日

@author: zhangyanfeng
'''

'''
多继承
Python同样有限的支持多继承形式。多继承的类定义形如下例:
class DerivedClassName(Base1, Base2, Base3):
需要注意圆括号中父类的顺序，若是父类中有相同的方法名，而在子类使用时未指定，方法在子类中未找到时，从左到右查找父类中是否包含方法。
'''
#类定义
class people:
    #定义基本属性
    name=''
    age=0
    #定义私有属性,私有属性在类外部无法直接进行访问
    __weight=0
    #定义构造方法
    def __init__(self,n,a,w):
        self.name=n
        self.age=a
        self.__weight=w
    def speak(self):
        print('%s 说: 我%s 岁.'% (self.name,self.age))

#单继承
class student(people):
    grade=''
    def __init__(self,n,a,w,g):
        #调用父类构造方法
        people.__init__(self, n, a, w)
        self.grade=g
    
    #重写父类方法
    def speak(self):
        print('%s 说:%s 岁了  在读 %s 年级'%(self.name,self.age,self.grade))
 
#另一个类,多重继承之前的准备
class speaker():        
    topic=''
    name=''
    
    def __init__(self,n,t):
        self.name=n
        self.topic=t
    def speak(self):
        print("我叫 %s，我是一个演说家，我演讲的主题是 %s"%(self.name,self.topic))
    
#多重继承
class sample(speaker,student):
    a=''
    def __init__(self,n,a,w,g,t):
        student.__init__(self, n, a, w, g)
        speaker.__init__(self, n, t) 

test=sample('Tim',25,80,4,'Python')
test.speak()#方法名同，默认调用的是在括号中排前地父类的方法
    